Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | const bcrypt = require('bcryptjs'); const JwtService = require('../../services/JwtService'); const jwtService = new JwtService(); /** * Login User Command Handler * Handles user login authentication */ class LoginUserCommandHandler { constructor(prisma) { this.prisma = prisma; } /** * Execute login command * @param {LoginUserCommand} command * @returns {Promise<Object>} { user, token } */ async handle(command) { const { email, password } = command; // Validáció if (!email || !password) { throw new Error('Email and password are required'); } // User keresése email alapján const user = await this.prisma.user.findUnique({ where: { email } }); if (!user) { throw new Error('Invalid email or password'); } // Jelszó ellenőrzése const isPasswordValid = await bcrypt.compare(password, user.password); if (!isPasswordValid) { throw new Error('Invalid email or password'); } // JWT token generálása const token = jwtService.generateToken({ userId: user.id, email: user.email }); // Jelszót ne adjuk vissza const { password: _, ...userWithoutPassword } = user; return { user: userWithoutPassword, token }; } } module.exports = LoginUserCommandHandler; |